%s INSIDE
%{
#define P(s) {BEGIN INSIDE; printf(s);}
#define PP(s){printf(s,yytext[0]);}
int yywrap();
%}
Standard_vowels [AEIOUYaeiouy]
Accented_vowels À|Ä|Â|Æ|È|É|Ê|Ë|Î|Ï|Ô|Ö|Û|Ü|à|ä|â|æ|è|é|ê|ë|î|ï|ô|ö|û|ü
Vowels {Standard_vowels}|{Accented_vowels}
Unvoiced_cons p|t|k|f|s|ch|P|T|K|F|S|CH
Voiced_cons [bdgvjrlmnBDGVJRLMN]
Nasal_cons m|n|gn|ng|M|N|GN|NG
Standard_consonants [bcdfghjklmnpqrstvwxzBCDFGHJKLMNPQRSTVWXZ]
Accented_consonants ç|Ç
Consonants {Standard_consonants}|{Accented_consonants}
tgroupA aire|able|ade|al|ale|ane|aste|ence|ent|ente|eux|ieuse|um|us
tgroupB age|as|ème|ère|ers
tgroupC e|é|en|enne|er|ez|o|ole|on|ons
Punctuation_marks [_.,:?!'\-;]
WhiteSpace [ \t\n]
Sep $|{Punctuation_marks}|{WhiteSpace}
%%

:					{printf(" :");}

{Punctuation_marks}			P(" ")

{WhiteSpace}+				{ECHO; BEGIN INITIAL;}

\<[^>]*\>				{ECHO; P(" ")
					}	/* <..> */


\[[^\]\[]*(\[[^\]\[]*\][^\]\[]*)*\]	{ECHO; P(" ")
					}	/* [...[..]...] */

(a|A|à|À|ä|Ä|â|Â)			P("a")
[aA][eE]				P("e")
(Æ|æ)					P("e")
[aA](ë|Ë)[nN]				P("a(~|En)")
[aA][eE][nN]				P("a~")
[aA](i|I|ï|Ï)[lL]{1,2}			P("aj")
[aA](i|I|ï|Ï)[lL]/{Sep}			P("aj(|#V)")
[aA](i|I|ï|Ï)[lL][lL][eE]		P("aj(6|)")
[aA](i|I|ï|Ï)[lL][lL][eE]/{Sep}		P("aj(6|#V|)")
[aA](i|I|ï|Ï)[mM]/{Sep}			P("e~")
[aA](i|I|ï|Ï)[nN]/{Sep}			P("(e~|En#V)")
[aA][iI][nN][cC]/{Sep}			P("e~")
[aA][iI][nN][tT]/{Sep}			P("e~(|t#V)")
[aA][iI][xX]/{Sep}			P("E(ks(|#V)|)")
[aA](i|I|ï|Ï)[sS]/{Sep}			P("E(|z#V)")
[aA](i|I|ï|Ï)[tT]/{Sep}			P("E(|t#V)")
[aA](i|I|ï|Ï)/[qQ]			P("ai")
[aA][iI]/{Consonants}			P("E")
[aA]ï/{Consonants}			P("E")
[aA]Ï/{Consonants}			P("E")
[aA]î/{Consonants}			P("E")
[aA]Î/{Consonants}			P("E")
[aA][mM][mM] 	                        P("am")
[aA][mM]/{Sep}		 		P("a(m(|#V)|~)")
[aA][nN]/{Sep}				P("a(n(|#V)|~)")
[aA][nN][nN]  		 		P("an")
[aA][nmNM][cC]/{Sep}			P("a~(k(|#V)|)")
[aA][nmNM][dD]/{Sep}			P("(a~(|d|t#V)|and)")
[aA][nmNM][gG]/{Sep} 			P("a~(|g)")
[aA][nmNM][sS]/{Sep}           	        P("a~(|s)")
[aA][nmNM][tT]/{Sep}           	        P("a~(|t#V)")
[aA][nmNM]/{Consonants}   		P("a~")
[aA](o|O|ô|Ô)				P("o")
[aA][oO][nN]				P("a~(|o)")
[aA][oO][uûUÛ]				P("(|a)u")
[aA][rR][dD]/{Sep}			P("aR(|d#V)")
[aA][rR][sS]/{Sep}			P("a(Rs(|#V)|)")
[aA][sS]/{Sep}				P("a(s|z#V|)")
[aA][sS][iI][oO][nN]/{Sep}		P("azjo~(|n#V)")
[aA][tT]/{Sep}				P("a(t(|#V)|)")
[aA][tT][iI][oO][nN]/{Sep}		P("asjo~(n#V|)")
[aA][uU]				P("o")
[aA](ü|Ü)				P("ay")
[aA][uU][dD]/{Sep}			P("o(|t#V)")
[aA][uU][xX]/{Sep}			P("o(|z#V)")
[aA][uU][lL][dDtT]/{Sep}		P("o")
[aA][uU][lL]				P("Ol")
[aA][uU][lL]/{Sep}			P("Ol(|#V)")
[aA][uU][rR]/{Sep}			P("OR(|#V)")
[aA][uU][rR]/{Vowels}			P("OR")
[aA][uU]/{Consonants}			P("o")
[aA][wW]				P("o") 
[aA][xX]				P("a(ks|)") 
[aA][yY]				P("(ei|E|Ej|aj)")
[aA][zZ]/{Sep}				P("a(z(|#V)|)")

<INITIAL>[bB]				P("b")
[bB]/[cC]				P("b")
[bB][vV]				P("")
[bB]{1,2}           			P("b")
[bB]/{Unvoiced_cons}			P("p")

[cC]{1,2}/[aAoOuU]			P("k")
[cC]/[eEiIyY]|é|É|è|È			P("s")
[cC][cC]/[eEiIyY]			P("ks")
[cC][hH]/{Sep}			 	P("(S(|#V)|k(|#V)|)")
<INITIAL>[cC][hH]			P("S")
[cC][hH]				P("(S|k)")
[cC][kK]				P("k")
[cC][cC][hH]         			P("k")
[cC][eE][âÂ]				P("sa")
<INITIAL>[cC][hH][rR]			P("kR")
[cC][tT]/{Sep}				P("(kt(|#V)|)")
[cC]{1,2}				P("k")
<INITIAL>[cC][']			P("s")
(ç|Ç)					P("s")

[dD]/{Voiced_cons}			P("d")
[dD]/{Unvoiced_cons}			P("t")
[dD]{1,2}           			P("d")
<INITIAL>[dD][']			P("d")
[dD]/{Sep}				P("(d(|#V)|)")

[eE]					P("(6|)")
[eE]/{Sep}				P("(6|#V|)")
[eE]{1,2}				P("i")
(é|É|ë|Ë)				P("e")
(é|É)[eE]				P("e")
(é|É)[eE][nN]/{Sep}			P("e(e~|En#V)")
(è|È|ê|Ê)				P("E")
[eE](a|A|â|Â)				P("a")
[eE](a|A|â|Â)[iI]			P("E")
[eE][aA][iI][lL][lL]			P("aj")
[eE](a|A|â|Â)([uU]|[uU][xX])		P("o")
[eE](a|A|â|Â)[uU][xX]/{Sep}		P("o(|z#V)")
[eE][aA][nN][nN]			P("an")
[eE][aA][nN]				P("a~")
[eE][hH][oO][uU][lL][dD]		P("u")
[eE][fF]{1,2}				P("ef")
[eE][fF]/{Sep}				P("e")
[eE][iI]				P("E")
[eE][iI][lL]				P("Ej")
[eE][iI][lL]/{Sep}			P("Ej(|#V)")
[eE][iI][lL][lL][eE]			P("Ej(6|)")
[eE][iI][lL][lL][eE]/{Sep}		P("Ej(6|#V|)")
[eE][iI][mM]				P("(e~|Em)")
[eE][iI][mM]/{Sep}			P("(Em(|#V)|ajm(|#V)|e~)")
[eE][iI][nN]/{Sep}			P("(e~|En#V)")
[eE][iI][nN][gG]/{Sep}			P("e~")
[eE][iI][nN][tT]/{Sep}			P("e~(|t#V)")
[eE][iI][xX]/{Sep}			P("E(ks|S|z#V|)")
[eE][lL][lL][eE]			P("El(6|)")
[eE][lL][lL][eE]/{Sep}			P("El(6|#V)")
[eE][lL][lL]				P("el")
[eE][lL]				P("(E|6)l")
[eE][lL]/{Sep}				P("El")
[eE][mM]/{Sep}				P("Em(|#V)")
<INITIAL>[eE][mM][mM]			P("a~m")
[eE][mM][mM]				P("Em")
[eE][mM][mM][eE][nN][tT]/{Sep}		P("ama~(|t#V)")
[eE][mM][pP][sS]/{Sep}			P("a~(|z#V)")
[eE][mM][pP][tT]/{Sep}			P("a~(|t#V)")
[eE][nN][nN]  				P("en")
[eE][nN][cC]/{Sep}			P("e~k")
[eE][nN][gG]/{Sep}			P("a~")
[eE][nN][dD]/{Sep}			P("(a~(|d|t#V)|End)")
[eE][nmNM][sS]/{Sep}          	        P("(a~(|s|z#V)|e~(|s|s#V))")
[eE][nmNM][tT]/{Sep}           	        P("a~(|t#V)")
[eE][nmNM]/{Consonants}   		P("a~")
[eE][nN]/[e]				P("(6|)n")
[eE][nN]/{Vowels}			P("(e|6)n")
[eE][nN]				P("a~")
[eE][nN]/{Sep}				P("(e~|En)")
[eE][oO]				P("O")
[eE][oO][iI]				P("wa")
[eE][oO][nN]				P("o~")
(é|É)[oO][nN]				P("eo~")
[eE][oO][yY]				P("waj")
[eE][oO][uU]				P("u")
[eE][ô|Ô]				P("o")
[eE][rR]/{Sep}				P("(ER(|#V)|9R|e)")
[eE][rR][fF]/{Sep}			P("ER(|f|#V)")
[eE][rR][sS]/{Sep}			P("(e(|z#V)|ER)")
[eE][sS]/{Sep}				P("(e(|z#V)|6(|z#V)|)") 
[eE][sS][tT]/{Sep}			P("E(s|)(t(|#V)|)")
[eE][sS][sS]         			P("es")
[eE][sS]/{Consonants}			P("es")
(è|È)[sS]/{Sep}				P("E(|s|z#V)")
[eE][tT][tT]				P("et")
[eE][tT]/{Sep}				P("E(t(|#V)|)") 
[eE][tT][sS]/{Sep}			P("E(|z#V)") 
[eE][tT][zZ]/{Sep}			P("Es") 
[eE](û|Û)				P("y")
[eE][uU]				P("9")
[eE][uU][iI][lL]/{Sep}			P("9j(|#V)")
[eE][uU][lL]/{Sep}			P("9l(|#V)")
[eE][uU]([nN]|[nN][gG])/{Sep}		P("9~")
[eE][uU][rR]/{Sep}			P("9R(|#V)")
[eE][uU][xX]/{Sep}			P("9(|z#V)")
[eE][xX]				P("Eks")
[eE][xX]/{Sep}				P("E(|ks#V)")
[eE][yY]				P("E(|j)")
[eE][zZ]/{Sep}				P("(e|E)(|z#V)")
[eE]/{Consonants}			P("(e|6)") 

[fF]{1,2}    				P("f")

[gG]/[aAoO]				P("g")
[gG]/[eEiIyY]				P("Z")
[gG][tT]/{Sep}				P("(|t#V)")
[gG][uU]/[aA]				P("gw")
[gG][uU](ë|Ë)				P("gy")
<INITIAL>[gG][uU]/([iIyY]{Vowels})	P("gH")
[gG][uU]/[iIyY]				P("g(H|)")
<INITIAL>[gG][uU]			P("g")
[gG][uU]				P("g")
[gG][uU]/{Sep}				P("gy")
[gG][eE]/(a|A|â|Â|o|O|ô|Ô)		P("Z")
[gG][gG]				P("(g|gZ|dZ)")
[gG][hH]				P("g")
[gG][nN]				P("(J|gn)")
[gG]/{Consonants}			P("g")
[gG]/{Vowels}				P("Z")
[gG]/{Sep}				P("(g(|#V)|)")
				 
<INITIAL>[hH]				P("*")
[hH]   					P("")

(i|I|î|Î|ï|Ï)				P("i")
(i|I|î|Î|ï|Ï)[eE]/{Sep}			P("i")
[iI]/{Vowels}				P("j")
ï/{Vowels}				P("j")
Ï/{Vowels}				P("j")
î/{Vowels}				P("j")
Î/{Vowels}				P("j")
[iI][eE][dD]				P("je")
[iI][eE][nN]/{Sep}			P("j(e~|En#V)")
[iI][eE][nN][sS]/{Sep}			P("je~(|z#V)")
[iI][eE][nN][tT]/{Sep}			P("ja~(|t#V)")
[iI][eE][rR]/{Sep}			P("j(e(|R#V)|ER(|#V))")
[iI][lL][lL][eE]			P("ij(6|)")
[iI][lL][lL][eE]/{Sep}			P("ij(6|#V|)")
[iI][lL]{1,2}				P("i(l|j|)")
[iI][lL]/{Sep}				P("i(l(|#V)|j(|#V)|)")
(i|I|î|Î|ï|Ï)[mM]/{Vowels}		P("im")
[iI][mM][mM]				P("im")
(i|I|î|Î|ï|Ï)[mMnN]/{Consonants}	P("e~")
[iI][mM]/{Sep}				P("(im(|#V)|e~)")
(i|I|î|Î|ï|Ï)[nN]/{Vowels}		P("in")
(i|I|î|Î|ï|Ï)[nN]/{Sep}			P("e~")
[iI][nN][gG]/{Sep}			P("iN")
[iI][nN][hH]				P("in")
[iI][nN][sS]/{Sep}			P("e~(|s|z#V)")
[iI][nN][tT]/{Sep}			P("e~(|t#V)")
[iI][oO][nN]			 	P("jo~")
[iI][sS]/{Sep}				P("i(s(|#V)|z(|#V)|)")
[iI][tT]/{Sep}				P("i(t(|#V)|)")
(ï|Ï)[tT]/{Sep}				P("it(|#V)")
[iI][xX]/{Sep}				P("i(ks(|#V)|z#V|s|)")
[iI][zZ]/{Sep}				P("i(z(|#V)|)")

[jJ]					P("Z")

[kK]{1,2}				P("k")

[lL][lL]/{Vowels}			P("l")
<INITIAL>[lL][']			P("l")
[lL]{1,2} 				P("l")

[mM]{1,2} 				P("m")
<INITIAL>[mM][']   			P("m")

[nN][nN]/{Vowels}			P("n")
[nN][gG]/{Sep}				P("N(|g#V)")
<INITIAL>[nN][']			P("n")
[nN]{1,2}/[^g]				P("n")

(o|O|ô|Ô|ö|Ö)				P("o")
[oO][aA]				P("Oa")
[oO][cC][eE]/{Sep}			P("Os(|#V)")
[oO][eE]/{Consonants}			P("e")
[oO](é|É)				P("oe")
[oO](è|È|ê|Ê|ë|Ë)			P("oE")
[oO][eE][iI][lL]{1,2}			P("9j")
[oO](ë|Ë)[nN]				P("we~")
[oO][eE][uU]				P("9")
[oO][eE][uU]/{Sep}			P("2")
<INITIAL>[oO][iI]/([gG][nN])		P("O")
[oO](i|I|î|Î)				P("wa")
[oO][iI][lL]				P("wal")
[oO][iI][lL]/{Sep}			P("wal(|#V)")
[oO][iI][lL][lL][eE]			P("waj(6|)")
[oO][iI][lL][lL][eE]/{Sep}		P("waj(6|#V|)")
[oO][iI][nN]			 	P("we~")
[oO][iI][nN][gG]/{Sep}			P("we~")
[oO][iI][nN][tT]/{Sep}			P("we~(|t#V)")
[oO][iI][rR]				P("waR")
[oO][iI][rR]/{Sep}			P("waR(|#V)")
[oO][iI][sSxX]/{Sep}			P("wa(|z#V)")
[oO][iI][tT]/{Sep}			P("wa(|t#V)")
[oO]/[lL]				P("O")
[oO][mM]				P("o~")
[oO][mM]/{Vowels}			P("om")
[oO][mM]/{Sep}				P("Om(|#V)")
[oO][mM][bB]/{Sep}			P("o~(|b#V)")
[oO][mM][eE]/{Sep}			P("(O|o)m(6|#V|)")
[oO][mM][mM]				P("Om")
[oO][mM][mM][eE]/{Sep}			P("Om(6|#V|)")
[oO][mM][pP][sS]/{Sep}			P("o~(|z#V)")
[oO][mM][pP][tT]			P("o~(p|)t")
[oO][mM][pP][tT]/{Sep}			P("o~(p|)t(|#V)")
[oO][nN]				P("o~")
[oO][nN]/{Vowels}			P("on")
[oO][nN]/{Sep}				P("(On(|#V)|o~)")
[oO][nN][cCgG]/{Sep}			P("o~")
[oO][nN][dD]/{Sep}			P("o~(|t#V)")
[oO][nN][eE]/{Sep}			P("(O|o)n(|#V)")
[oO][nN][nN]				P("On")
[oO][nN][nN][eE]			P("On(#V|)")
[oO][nN][sS]/{Sep}			P("o~(|s|z#V)")
[oO][nN][tT]				P("o~(t|)")
[oO][nN][tT]/{Sep}			P("o~(t#V|)")
[oO]{2}[lL]				P("Ol")
[oO]{2}					P("u")
[oO]{2}[zZ]				P("(o|Ooz)")
[oO]/[rR]				P("O")
[oO][rR][dD][sS]			P("OR")
[oO][sS]/{Sep}				P("(o|Oz#V)")
[oO][sS]/[iIeEaA]			P("oz")
[oO][sS][sS][eE]			P("(o|O)s")
[oO][sS][tT]				P("(o|Ost)")
[oO][tT]/{Sep}				P("(Ot(|#V)|o)")
(ô|Ô)[tT]/{Sep}				P("o(|t#V)")
[oO](u|U|û|Û|ù|Ù)			P("u")
[oO][uU]/[eE]				P("u")
[oO][uU]/{Vowels}			P("w")
[oO][uU][iI][nN]/{Sep}			P("we~")
[oO][uU][iI][sS]/{Sep}			P("wi(|z#V)")
[oO][uU][lL][lT]/{Sep}			P("u(lt(|#V)|)")
[oO][uU][rR]/{Sep}			P("uR(|#V)")
[oO][uU][rR][dD]/{Sep}			P("uR(|d#V)")
[oO][uU][rR][gG]/{Sep}			P("uR(|g#V)")
[oO][uU][rR][sS]/{Sep}			P("uR(s|z#V)")
[oO][uU][sS]/{Sep}			P("u(|s|z#V)")
[oO][uU][sS][tT]/{Sep}			P("u(|st|st#V)")
[oO][uU][tT]/{Sep}			P("u(|t#V)")
[oO][uU][xX]/{Sep}			P("u(|z#V)")
[oO][wW]/{Sep}				P("o")
[oO][wW]/{Vowels}			P("(o|aw)")
[oO][yY]/{Sep}				P("wa")
[oO][yY]/{Vowels}			P("waj")
[oO][yY][eE]/{Sep}			P("wa")
[oO][zZ]/{Sep}				P("o(z(|#V)|)")


[pP][pP]/{Vowels}			P("p")
[pP]{1,2}				P("p")
[pP][hH]				P("f")
[pP]/{Sep}                              P("(p#V|)")

[qQ][uU]/[aA]				P("k(w|)")
[qQ][uU]/[eE]				P("k(w|H|6|)")
[qQ][uU][eE]/{Sep}			P("k(6|#V)")
[qQ][uU]/[iI]				P("k(Hi|)")
[qQ][uU]/[oO]				P("k")
[qQ][uU][']				P("k")
[qQ](û|Û)    				P("ky")
[qQ]    				P("k")

[rR]{1,2}				P("R")
[rR][hH]				P("R")
[rR][dD]/{Sep}				P("R(|d#V)")
[rR][sS]/{Sep}				P("R(|z#V)")
[rR][tT]/{Sep}				P("R(|t#V)")

<INITIAL>[sS]/{Vowels}			P("s")
[sS][cC]/[eEiIyY]			P("s")
[sS][cC][hH]				P("(S|sk)")
[sS][hH]				P("S")
<INITIAL>[sS][']			P("s")
[sS]/{Consonants}			P("s")
[sS]					P("(z|s)")
[sS]/{Sep}				P("(|z#V)")
[sS][sS]/{Vowels}			P("s")
<INITIAL>[sS][tT]/{Vowels}		P("st")
[sS][tT]/{Sep}				P("(st(|#V)|t(|#V)|)")

<INITIAL>[tT][']			P("t")
[tT]{1,2}		  		P("t")
[tT]/{Sep}		  		P("(t#V|)")
[tT][iI]/{tgroupA}			P("si")
[tT][iI]/{tgroupB}			P("ti")
[tT][iI]/{tgroupC}			P("(s|t)i")
[tT][cC][hH]				P("tS")
[tT][hH]				P("t")
[tT][hH]/{Sep}				P("(t|)")
[tT][hH][rR]				P("tR)")
[tT][rR][aA][nN][sS]/({Vowels}|h)	P("tRa~z")
[tT][zZ]				P("ts")
[tT][zZ]/{Sep}				P("(ts|s|)")

(u|U|ù|Ù|ü|Ü|û|Û)			P("y")
((u|U|û|Û|ü|Ü)|[uU][eE])/{Sep}	        P("y")
[uU][eE][iI][lL]			P("9j")
[uU][iI]				P("Hi")
[uU][iI][eE]				P("Hi")
[uU][iI][nN]				P("He~")
[uU][iI][rR]				P("HiR")
[uU][iI][sS]/{Sep}			P("Hi(|z#V)")
[uU][iI][tT]/{Sep}			P("Hi(t(|#V)|)")
[uU][lL]/{Sep}				P("y(l(|#V)|)")
[uU][mMnN]/{Consonants}			P("9~")
[uU][mM]/{Sep}				P("(Om(|#V)|um(|#V)|9~)")
[uU][nN]/{Sep}				P("9~(|n#V)")
[uU][nN][gG]/{Sep}			P("9~(|g#V)")
[uU][nN][sS]/{Sep}			P("9~(s(|#V)|)")
[uU][nN][tT]/{Sep}			P("9~(|t#V)")
[uU][nN]/{Consonants}			P("(9~|o~)")
[uU][rR]/{Sep}				P("yR(|#V)")
[uU][sS]/{Sep}				P("y(s(|#V)|)")
[uU][tT]/{Sep}				P("y(t(|#V)|)")
[uU][xX]/{Sep}				P("y(ks|z#V|)")
[uU][yY]				P("Hi")
[uU][yY]/{Vowels}			P("Hij")


[vV]{1,2}				P("v")
[vV][iI][lL][lL][eE]			P("vil(6|)")

<INITIAL>[wW]				P("(v|w)")
[wW]/{Sep}				P("f(|#V)")
				 
[xX]/(anth)				P("gs")
[xX]					P("(g|k)s")

[yY]/{Consonants}		P("i")
[yY]/{Vowels}			P("j")
[yY][eE][rR]/{Sep}		P("j(ER(|#V)|e)")
[yY][lL]{2}[eE]			P("il")
[yY][mMnN]			P("e~")
[yY][oO][nN]/{Sep}		P("(i|j)o~")
[yY]/{Sep}			P("i")

[zZ]{1,2}			P("z")
[zZ]/{Sep}			P("")

.   				{ECHO;} 

%%
int yywrap() { return 1; }

main(argc, argv)
int argc; 
char **argv; 
{
 int i; 

  ++argv; --argc; /* skip over program name */ 

  if(argc>0){ 
    for(i=0; i<argc; i++){ 
      yyin = fopen(argv[i],"r");
      if (yyin==NULL)  
        fprintf(stderr,"could not open %s --- skipped.\n",argv[i]);  
      else { 
        yylex(); 
      } 
    } 
  } else { 
    yyin=stdin; 
    yylex(); 
  }      
} 
